this.definations = {};//这是一对象，里边存放着所有的变量的定义语句
this.ast.body.forEach(statement => {
    Object.keys().forEach(name => {
        this.difinations[name] = statement;
    })
})

expandStatement(statement){
    state._inclued = true;//这个语句已经被包含过了 表示可以用来避免重复导入
    let result = [];
    const dependsons = Object.keys(statement._dependOn);
    dependsOns.forEach(naem =>{
        let defination = this.define(name);//找到这个变量name定义的语句
        result.push(...defination);
        return result;
    })
    define(name){
        //如果在import中就是一个导入的变量，如果不在就是一个本地变量
        if(Object.hasOwnProperty(this.importScripts,name)){
            const {source} = this.imports[name];
            let importModule = this.bundle.fetchModule(source,this.path);
            //判断这个模块有没有导出这个变量
            const exportDeclaration = importModule.exports[importModule];
            if (!exportDeclaration){
                throw new Error(`Modlue ${important}`)
            }
            //返回导入的模块./msg.js里面定义的name变量的语句
            return importModule.define(exportDeclaration.localName)
        }else{
            let statement;
            statement = this.definiations[name];//export
            if(statement && !statement._inclued){
                return this.expandStatement(statement)
            }else{
                return [];
            }
        }
    }
}